/** layui-v2.1.4 MIT License By http://www.layui.com */ ;
layui.define("layer", function(e) {
  "use strict";
  var i = layui.$,
    t = layui.layer,
    n = layui.hint(),
    a = layui.device(),
    o = {
      config: {},
      set: function(e) {
        var t = this;
        return t.config = i.extend({}, t.config, e), t
      },
      on: function(e, i) {
        return layui.onevent.call(this, r, e, i)
      }
    },
    l = function() {
      var e = this;
      return {
        upload: function(i) {
          e.upload.call(e, i)
        },
        config: e.config
      }
    },
    r = "upload",
    u = "layui-upload-file",
    c = "layui-upload-form",
    s = "layui-upload-iframe",
    f = "layui-upload-choose",
    p = function(e) {
      var t = this;
      t.config = i.extend({}, t.config, o.config, e), t.render()
    };
  p.prototype.config = {
    accept: "images",
    exts: "",
    auto: !0,
    bindAction: "",
    url: "",
    field: "file",
    method: "post",
    data: {},
    drag: !0,
    size: 0,
    multiple: !1
  }, p.prototype.render = function(e) {
    var t = this,
      e = t.config;
    e.elem = i(e.elem), e.bindAction = i(e.bindAction), t.file(), t.events()
  }, p.prototype.file = function() {
    var e = this,
      t = e.config,
      n = e.elemFile = i(['<input class="' + u + '" type="file" name="' + t.field + '"', t.multiple ? " multiple" : "", ">"].join("")),
      o = t.elem.next();
    (o.hasClass(u) || o.hasClass(c)) && o.remove(), a.ie && a.ie < 10 && t.elem.wrap('<div class="layui-upload-wrap"></div>'), e.isFile() ? (e.elemFile = t.elem, t.field = t.elem[0].name) : t.elem.after(n), a.ie && a.ie < 10 && e.initIE()
  }, p.prototype.initIE = function() {
    var e = this,
      t = e.config,
      n = i('<iframe id="' + s + '" class="' + s + '" name="' + s + '" frameborder="0"></iframe>'),
      a = i(['<form target="' + s + '" class="' + c + '" method="' + t.method, '" key="set-mine" enctype="multipart/form-data" action="' + t.url + '">', "</form>"].join(""));
    i("#" + s)[0] || i("body").append(n), t.elem.next().hasClass(s) || (e.elemFile.wrap(a), t.elem.next("." + s).append(function() {
      var e = [];
      return layui.each(t.data, function(i, t) {
        e.push('<input type="hidden" name="' + i + '" value="' + t + '">')
      }), e.join("")
    }()))
  }, p.prototype.msg = function(e) {
    return t.msg(e, {
      icon: 2,
      shift: 6
    })
  }, p.prototype.isFile = function() {
    var e = this.config.elem[0];
    if (e) return "input" === e.tagName.toLocaleLowerCase() && "file" === e.type
  }, p.prototype.preview = function(e) {
    var i = this;
    window.FileReader && layui.each(i.chooseFiles, function(i, t) {
      var n = new FileReader;
      n.readAsDataURL(t), n.onload = function() {
        e && e(i, t, this.result)
      }
    })
  }, p.prototype.upload = function(e, t) {
    var n, o = this,
      l = o.config,
      r = o.elemFile[0],
      u = function() {
        layui.each(e || o.files || o.chooseFiles || r.files, function(e, t) {
          var n = new FormData;
          n.append(l.field, t), layui.each(l.data, function(e, i) {
            n.append(e, i)
          }), i.ajax({
            url: l.url,
            type: l.method,
            data: n,
            contentType: !1,
            processData: !1,
            dataType: "json",
            success: function(i) {
              d(e, i)
            },
            error: function() {
              o.msg("请求上传接口出现异常"), m(e)
            }
          })
        })
      },
      c = function() {
        var e = i("#" + s);
        o.elemFile.parent().submit(), clearInterval(p.timer), p.timer = setInterval(function() {
          var i, t = e.contents().find("body");
          try {
            i = t.text()
          } catch (n) {
            o.msg("获取上传后的响应信息出现异常"), clearInterval(p.timer), m()
          }
          i && (clearInterval(p.timer), t.html(""), d(0, i))
        }, 30)
      },
      d = function(e, i) {
        if (o.elemFile.next("." + f).remove(), r.value = "", "object" != typeof i) try {
          i = JSON.parse(i)
        } catch (t) {
          return i = {}, o.msg("请对上传接口返回有效JSON")
        }
        "function" == typeof l.done && l.done(i, e || 0, function(e) {
          o.upload(e)
        })
      },
      m = function(e) {
        l.auto && (r.value = ""), "function" == typeof l.error && l.error(e || 0, function(e) {
          o.upload(e)
        })
      },
      v = l.exts,
      h = function() {
        var i = [];
        return layui.each(e || o.chooseFiles, function(e, t) {
          i.push(t.name)
        }), i
      }(),
      g = {
        preview: function(e) {
          o.preview(e)
        },
        upload: function(e, i) {
          var t = {};
          t[e] = i, o.upload(t)
        },
        pushFile: function() {
          return o.files = o.files || {}, layui.each(o.chooseFiles, function(e, i) {
            o.files[e] = i
          }), o.files
        }
      },
      y = function() {
        return "choose" === t ? l.choose && l.choose(g) : (l.before && l.before(g), a.ie ? a.ie > 9 ? u() : c() : void u())
      };
    switch (h = 0 === h.length ? r.value.match(/[^\/\\]+\..+/g) || [] || "" : h, l.accept) {
      case "file":
        if (v && !RegExp("\\w\\.(" + v + ")$", "i").test(escape(h))) return o.msg("选择的文件中包含不支持的格式"), r.value = "";
        break;
      case "video":
        if (!RegExp("\\w\\.(" + (v || "avi|mp4|wma|rmvb|rm|flash|3gp|flv") + ")$", "i").test(escape(h))) return o.msg("选择的视频中包含不支持的格式"), r.value = "";
        break;
      case "audio":
        if (!RegExp("\\w\\.(" + (v || "mp3|wav|mid") + ")$", "i").test(escape(h))) return o.msg("选择的音频中包含不支持的格式"), r.value = "";
        break;
      default:
        if (layui.each(h, function(e, i) {
            RegExp("\\w\\.(" + (v || "jpg|png|gif|bmp|jpeg$") + ")", "i").test(escape(i)) || (n = !0)
          }), n) return o.msg("选择的图片中包含不支持的格式"), r.value = ""
    }
    if (l.size > 0 && !(a.ie && a.ie < 10)) {
      var F;
      if (layui.each(o.chooseFiles, function(e, i) {
          if (i.size > 1024 * 10000) {
            var t = l.size / 1024;
            t = t >= 1 ? Math.floor(t) + (t % 1 > 0 ? t.toFixed(1) : 0) + "MB" : l.size + "KB", r.value = "", F = t
          }
        }), F) return o.msg("文件不能超过" + F)
    }
    y()
  }, p.prototype.events = function() {
    var e = this,
      t = e.config,
      o = function(i) {
        e.chooseFiles = {}, layui.each(i, function(i, t) {
          var n = (new Date).getTime();
          e.chooseFiles[n + "-" + i] = t
        })
      },
      l = function(i, n) {
        var a = e.elemFile,
          o = i.length > 1 ? i.length + "个文件" : (i[0] || {}).name || a[0].value.match(/[^\/\\]+\..+/g) || [] || "";
        a.next().hasClass(f) && a.next().remove(), e.upload(null, "choose"), e.isFile() || t.choose || a.after('<span class="layui-inline ' + f + '">' + o + "</span>")
      };
    t.elem.off("upload.start").on("upload.start", function() {
      var a = i(this),
        o = a.attr("lay-data");
      if (o) try {
        o = new Function("return " + o)(), e.config = i.extend({}, t, o)
      } catch (l) {
        n.error("Upload element property lay-data configuration item has a syntax error: " + o)
      }
      e.config.item = a, e.elemFile[0].click()
    }), a.ie && a.ie < 10 || t.elem.off("upload.over").on("upload.over", function() {
      var e = i(this);
      e.attr("lay-over", "")
    }).off("upload.leave").on("upload.leave", function() {
      var e = i(this);
      e.removeAttr("lay-over")
    }).off("upload.drop").on("upload.drop", function(n, a) {
      var r = i(this),
        u = a.originalEvent.dataTransfer.files || [];
      r.removeAttr("lay-over"), o(u), t.auto ? e.upload(u) : l(u)
    }), e.elemFile.off("upload.change").on("upload.change", function() {
      var i = this.files || [];
      o(i), t.auto ? e.upload() : l(i)
    }), t.bindAction.off("upload.action").on("upload.action", function() {
      e.upload()
    }), t.elem.data("haveEvents") || (e.elemFile.on("change", function() {
      i(this).trigger("upload.change")
    }), t.elem.on("click", function() {
      e.isFile() || i(this).trigger("upload.start")
    }), t.drag && t.elem.on("dragover", function(e) {
      e.preventDefault(), i(this).trigger("upload.over")
    }).on("dragleave", function(e) {
      i(this).trigger("upload.leave")
    }).on("drop", function(e) {
      e.preventDefault(), i(this).trigger("upload.drop", e)
    }), t.bindAction.on("click", function() {
      i(this).trigger("upload.action")
    }), t.elem.data("haveEvents", !0))
  }, o.render = function(e) {
    var i = new p(e);
    return l.call(i)
  }, e(r, o)
});
